writer->writeEndElement(); // Close LookAt tag
}
-static void kml_output_positioning(void)
+static void kml_output_positioning(bool tessellate)
{
+ // These elements must be output as a sequence, i.e. in order.
+ if (extrude) {
+ writer->writeTextElement("extrude", "1");
+ }
+
+ if (tessellate) {
+ writer->writeTextElement("tessellate", "1");
+ }
+
if (floating) {
writer->writeTextElement("altitudeMode", "absolute");
}
- if (extrude) {
- writer->writeTextElement("extrude", "1");
- }
}
/* Output something interesing when we can for route and trackpoints */
}
writer->writeStartElement("Point");
- kml_output_positioning();
-
- if (extrude) {
- writer->writeTextElement("extrude", "1");
- }
+ kml_output_positioning(false);
kml_write_coordinates(waypointp);
writer->writeEndElement(); // Close Point tag
writer->writeEndElement(); // Close LineString tag
}
writer->writeStartElement("LineString");
- kml_output_positioning();
- writer->writeTextElement("tessellate","1");
+ kml_output_positioning(true);
writer->writeStartElement("coordinates");
writer->writeCharacters("\n");
}
// Location
writer->writeStartElement("Point");
- kml_output_positioning();
+ kml_output_positioning(false);
kml_write_coordinates(waypointp);
writer->writeEndElement(); // Close Point tag
writer->writeOptionalTextElement("name", header->rte_name);
writer->writeTextElement("styleUrl", "#multiTrack");
writer->writeStartElement("gx:Track");
- kml_output_positioning();
+ kml_output_positioning(false);
QUEUE_FOR_EACH(&header->waypoint_list, elem, tmp) {
Waypoint* tpt = (Waypoint*)elem;